package org.zebra.mybatis.plus.ext.redundancy.annotation;

import java.lang.annotation.*;

/**
 * @author zhanghongbin
 */
@Inherited
@Documented
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface RedundancyField {

    /**
     * 数据来源的Entity class
     * @return 类型
     */
    Class<?> source() default Void.class;

    /**
     * 数据来源的Entity对应的属性
     * @return 返回值
     */
    String field();

    /**
     * 数据来源
     * @return 条件
     */
    Condition[] conditions();

    /**
     * 执行更新的时候额外的where条件
     * 通常指被更新表自身的特殊条件，例如：enable=1 and is_deleted=0
     * @return 返回值
     */
    String updateCondition() default "";
}
